const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const cors = require('koa2-cors');

const { APP_PORT } = require('./config/config.default');
const router = require('./router');

const app = new Koa()

// 解析 body
app.use(bodyParser());

app.use(cors({
  origin: (ctx) => {
    // 根据请求来源动态设置允许的源
    if (ctx.url === '/test') {
      return "*"; // 允许来自所有域的跨域请求
    }
    return "http://localhost:8080"; // 只允许来自http://example.com的请求
  },
  allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'], // 允许的方法
  allowHeaders: ['Content-Type', 'Authorization', 'Accept'], // 允许的头部
  exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], // 暴露的头部
  maxAge: 5, // 预检请求的有效期，单位为秒
  credentials: true, // 是否允许发送Cookie
  keepHeadersOnError: true // 出错时保持头部信息
}));

// 路由注册
for (let key in router) {
    app.use(router[key].routes());
}

app.listen(APP_PORT, () => {
  console.log(`server is running on http://localhost:${APP_PORT}`)
})